package org.bonorsoft.modules.dingding.service;

import org.bonorsoft.common.system.vo.Ztree;
import org.bonorsoft.modules.dingding.entity.SysDepart;
import com.baomidou.mybatisplus.extension.service.IService;
import org.bonorsoft.modules.dingding.entity.SysRole;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @Description: 组织结构
 * @Author: WilliamYe
 * @Date:   2020-11-13
 * @Version: V1.0
 */
public interface ISysDepartService extends IService<SysDepart> {

    void addOrUpdateDepart(List<Integer> deptId);

    void deleteDepart(List<Integer> deptId);

    /**
     * 查询部门管理树
     *
     * @param dept 部门信息
     * @param req
     * @return 所有部门信息
     */
    public List<Ztree> selectDeptTree(SysDepart dept, HttpServletRequest req);

    /**
     * 判断是否存在父部门
     */
    void hasTopParentDepart() throws Exception;

    /**
     * 判断是否存在子部门
     */
    boolean notHasKidDepart(Long deptId);

    /**
     * 查询SysDepart集合
     * @param userid
     * @return
     */
    public List<SysDepart> queryUserDeparts(String userid);

    /**
     * 根据角色ID查询部门（数据权限）
     *
     * @param role 角色对象
     * @param request
     * @return 部门列表（数据权限）
     */
    public List<Ztree> roleDeptTreeData(SysRole role, HttpServletRequest request);

    /**
     * 根据部门id获取部门信息
     * @param deptId
     * @return
     */
    public SysDepart getDepartNameById(Long deptId);
}
